package initilization

import (
	"fmt"
	"github.com/beego/beego/v2/client/orm"
	beego "github.com/beego/beego/v2/server/web"
	_ "github.com/go-sql-driver/mysql"
	"ksd-social-api/commons/global"
	cmodel "ksd-social-api/modules/course/model"
	umodel "ksd-social-api/modules/user/model"
	"ksd-social-api/utils"
	"time"
)

// 数据库连接工作
func InitMYSQL() {
	// 开启调试模式
	if global.Env == "dev" {
		orm.Debug = true
	}
	// 注册数据模型---其实就用反射把注册结构体属性进行解析，然后组织一个创建语句或者alert进行创建表或者修改表
	orm.RegisterModel(&umodel.User{})
	orm.RegisterModel(&cmodel.Course{})
	orm.RegisterModel(&cmodel.CourseComment{})

	// 获取自定义的数据库配置信息
	dbtype, _ := beego.AppConfig.String("db.type")
	dbuserame, _ := beego.AppConfig.String("db.username")
	dbpassword, _ := beego.AppConfig.String("db.password")
	dbhost, _ := beego.AppConfig.String("db.host")
	dbport, _ := beego.AppConfig.Int("db.port")
	dbname, _ := beego.AppConfig.String("db.name")
	dbparams, _ := beego.AppConfig.String("db.params")
	// 获取链接字符串
	mysqlConn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?%s", dbuserame, dbpassword, dbhost, dbport, dbname, dbparams)
	// 设置数去
	orm.DefaultTimeLoc = time.UTC
	// 注册驱动类型是MYSQL
	orm.RegisterDriver(dbtype, orm.DRMySQL)
	fmt.Println("mysqlConn", mysqlConn)
	// 连接数据库
	err := orm.RegisterDataBase("default", dbtype, mysqlConn)
	// 同步数据库表
	orm.RunSyncdb("default", false, true)
	if err != nil {
		global.SugarLog.Error("数据库MYSQL连接失败，失败的原因是：%v", err)
		return
	}

	global.SugarLog.Debug("数据库MYSQL连接成功!!!")
	//// 创建orm对象
	mysql := orm.NewOrm()
	var count int
	mysql.Raw("select count(1) from xk_user where username='feige'").QueryRow(&count)
	if count == 0 {
		uuid := utils.GetUUID()
		user := new(umodel.User)
		user.ID = 1
		user.UserName = "feige"
		user.Telephone = "15074816437"
		user.BgImg = "bg.jpg"
		user.NickName = "飞哥"
		user.Uuid = uuid
		user.BirthDay = time.Now()
		user.Password = utils.Md5Slat("123456", uuid)
		user.Avatar = "/img/avatard.jpg"
		user.Male = 1
		// 保存用户
		mysql.Insert(user)
	}

}
